int case_ignore_strcmp(const char *s1, const char *s2);
-char *strsub(char *s, char *search, char *replace);
+char *strsub(const char *s, const char *search, const char *replace);
+char *gstrsub(const char *s, const char *search, const char *replace);
void rtrim(char *s);
signed int get_tz_offset(void);
time_t current_time(void);
* Doesn't try to make an optimally sized dest buffer.
*/
char *
-strsub(char *s, char *search, char *replace)
+strsub(const char *s, const char *search, const char *replace)
{
char *p;
int len = strlen(s);
return d;
}
+/*
+ * As strsub, but do it globally.
+ */
+char *
+gstrsub(const char *s, const char *search, const char *replace)
+{
+ char *o = xstrdup(s);
+
+ while (strstr(o, search)) {
+ o = strsub(o, search, replace);
+ }
+
+ return o;
+}
+
char *
rot13( const char *s )
{
return result;
}
+#if 0
+/*
+ * Convert to ISO 8859-1 (LATIN-1). The result is never longer than
+ * the source.
+ */
+char *
+str_utf8_to_8859_1( const char * str )
+{
+ char *result = xstrdup( str );
+ char *cur = result;
+ unsigned char c;
+
+ while (c = *str++) {
+ if (c < 0x80) {
+ *cur++ = c;
+ continue;
+ }
+ if ((c & 0xFE) == 0xC2) {
+ *cur++ = ((c & 0x03) << 6) | (*str++ & 0x3f);
+ }
+ }
+
+ return result;
+}
+#endif
+
char * str_utf8_to_ascii( const char * str )
{
char *result;